# 覆盖：只会执行子类的方法
# 扩展：在执行子类方法的同时还执行父类的方法

# class Master():
#     def __init__(self):
#         self.kongfu = "古法煎饼果子技术"
#
#     def cook(self):
#         print(f"使用{self.kongfu}来制作煎饼果子")
#
# class Prentice(Master):
#     def __init__(self):
#         self.kongfu = "独创的煎饼果子技术"
#
#     def cook(self):  # 重写指的是重新父类的相同属性和方法名
#         print(f"使用{self.kongfu}来制作煎饼果子")
#
# xiaoming = Prentice()
# print(xiaoming.kongfu)
# xiaoming.cook()
# 如果在相同的名字的属性和方法名的前提下，子类(找到了执行子类)-父类(没有找到往父类)


class Master():
    def __init__(self):
        self.kongfu = "古法煎饼果子技术"

    def cook(self):
        print(f"使用{self.kongfu}来制作煎饼果子")

class Prentice(Master):
    def __init__(self):
        self.kongfu = "独创煎饼果子技术"

    def cook(self):
        print(f"使用{self.kongfu}来制作煎饼果子")
        # 在这里去调用父类的属性和方法
        # super().__init__() # 初始化属性
        # super().cook()
        super(Prentice,self).__init__()  # 子类上一个父类(Master) self
        super(Prentice,self).cook()
xiaoming = Prentice()
# print(xiaoming.kongfu)
xiaoming.cook()
# 查找顺序